/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managers;

import beans.Barrio;
import beans.Boliche;
import beans.Profesion;
import dao.BarrioDao;
import dao.BolicheDao;
import dao.ProfesionDao;
import dao.ReportingDao;
import forms.RankSocios;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/**
 *
 * @author nMoncho
 */
public class ManagerReporting {

    private RankSocios pantalla;

    public ManagerReporting(RankSocios pantalla) {
        this.pantalla = pantalla;
    }

    public void getReportRankingClientes(TableModel model) {
        DefaultTableModel defModel = (DefaultTableModel) model;
        List<Object[]> listado = ReportingDao.getRankingSocios();
        for (Object[] row : listado) {
            defModel.addRow(row);
        }
    }

    public List<Boliche> getBoliches() {
        List<Boliche> boliches = new ArrayList<Boliche>();
        Boliche bol = new Boliche();//Boliche vacio
        bol.setId(0);
        boliches.add(bol);
        for (Boliche boliche : BolicheDao.getBoliches()) {
            boliches.add(boliche);
        }

        return boliches;
    }

    public List<Barrio> getBarrios() {
        return BarrioDao.getBarrios();
    }

    public List<Profesion> getProfesiones() {
        return ProfesionDao.getProfesiones();
    }

    public void realizarFiltro(Boliche boliche, String sexo, String[] razones, String[] barrios, String[] estudios) {
        if (boliche.getId().intValue() == 0) {
            boliche = null;
        }
        if (sexo.equalsIgnoreCase("Masculino")) {
            sexo = "M";
        }else if(sexo.equalsIgnoreCase("Femenino")) {
            sexo = "F";
        }else
            sexo = null;
       
        if(razones != null && razones.length > 0){
            for(int i=0;i<razones.length;i++)
                razones[i] = razones[i].toUpperCase();
        }

        Barrio[] oBarrios = null;
        if(barrios != null && barrios.length>0){
            oBarrios = new Barrio[barrios.length];
            Barrio barrio;
            for (int i = 0; i < barrios.length; i++) {
                barrio = BarrioDao.getBarrioPorNombre(barrios[i]);
                System.out.println(i + " " + barrio);
                oBarrios[i] = barrio;
            }
        }

        Profesion[] oEstudios = null;
        if(estudios != null && estudios.length > 0){
            oEstudios = new Profesion[estudios.length];
            Profesion estudio;
            for (int i = 0; i < estudios.length; i++) {
                estudio = ProfesionDao.getProfesionPorNombre(estudios[i]);
                System.out.println(i+" "+estudio);
                oEstudios[i] = estudio;
            }
        }

        List<Object[]> filtros = ReportingDao.getRankingSociosConFiltros(boliche, sexo, razones, oBarrios, oEstudios);
        DefaultTableModel defModel = (DefaultTableModel) pantalla.getTable().getModel();
        for(int i=defModel.getRowCount()-1;i>-1;i--)
            defModel.removeRow(0);

        for (Object[] row : filtros) {
            defModel.addRow(row);
            System.out.println(row[1]);
        }
        
        pantalla.getTable().updateUI();
        pantalla.makeLinkBox(0);
    }
}
